PM2 介绍与常用命令
一、核心要点速览
💡 核心考点
- PM2: Node.js 生产级进程管理器(类似 supervisor)
- 核心功能: 进程守护、负载均衡、日志管理、自动重启
- 关键命令: start/stop/restart/list/logs/monit
- 配置文件: ecosystem.config.js 多环境管理
- 集群模式: 多核利用 + 零停机重启
二、重要资源链接
| 资源 | 链接 | 说明 |
|---|---|---|
| 官方网站 | pm2.keymetrics.io | 产品介绍、下载 |
| 官方文档 | pm2.keymetrics.io/docs | 完整使用教程 |
| GitHub | github.com/Unitech/pm2 | 源码、Issue、PR |
| NPM 包 | npmjs.com/package/pm2 | 安装包、版本 |
| 插件市场 | pm2.keymetrics.io/docs/modules | 扩展模块 |
| 安装命令 | npm install pm2@latest -g | 全局安装 |
三、PM2 快速入门
1. PM2 是什么
PM2 定位:Node.js 生产级进程管理器
核心特点:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✓ 进程守护 - 应用崩溃自动重启,系统重启自动启动
✓ 负载均衡 - 集群模式利用多核 CPU,提升性能
✓ 日志管理 - 自动收集日志,支持日志轮转
✓ 监控面板 - 实时监控 CPU、内存使用情况
✓ 零停机重启 - reload 命令实现无缝重启
✓ 配置管理 - ecosystem.config.js 多环境支持
技术栈:
语言:Node.js
模式:单进程/集群模式
适用:Node.js/Python/Java等
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2. 安装与初始化
bash
# ========== 全局安装 ==========
npm install pm2@latest -g
yarn global add pm2
# 验证安装
pm2 --version
# ========== 快速启动 ==========
pm2 start app.js # 启动应用
pm2 start app.js -i 4 # 集群模式,4 实例
pm2 start app.js -i max # 集群模式,CPU 核心数
pm2 list # 查看进程
pm2 logs # 查看日志
pm2 monit # 实时监控
# ========== 开机自启 ==========
pm2 startup # 生成开机自启命令
pm2 save # 保存进程列表四、常用命令速查
1. 进程管理(高频)
bash
# 启动
pm2 start app.js # 启动应用
pm2 start app.js -i max # 集群模式
pm2 start app.js --name "api" # 指定名称
pm2 start app.js --watch # 监听变化
# 停止
pm2 stop all # 停止所有
pm2 stop 0 # 停止 id=0
pm2 stop "api-*" # 按名称停止
# 重启
pm2 restart all # 重启所有
pm2 reload all # 零停机重载(集群)
pm2 gracefulReload all # 优雅重载
# 删除
pm2 delete all # 删除所有
pm2 delete 0 # 删除特定2. 监控与日志(每天使用)
bash
# 日志
pm2 logs # 查看所有日志
pm2 logs api # 查看特定应用
pm2 logs --lines 100 # 最近 100 行
pm2 logs --timestamp # 显示时间戳
# 清空日志
pm2 flush # 清空所有
# 监控
pm2 monit # 实时监控面板
pm2 dashboard # Web 仪表盘3. 高级操作(每周/月使用)
bash
# 进程缩放
pm2 scale api 8 # 缩放到 8 实例
pm2 scale api +2 # 增加 2 实例
# 系统配置
pm2 startup # 开机自启
pm2 save # 保存进程
pm2 update # 更新 PM2
# 清理
pm2 kill # 杀死所有进程
pm2 purge # 清除所有日志4. 命令频率分类表
| 频率 | 命令 | 说明 |
|---|---|---|
| 每天多次 | start stop restart list logs monit | 日常管理 |
| 每周使用 | reload delete describe scale | 维护操作 |
| 每月使用 | startup save flush update | 系统配置 |
| 很少使用 | kill purge expose dashboard | 特殊场景 |
五、配置文件详解
1. ecosystem.config.js 基础
javascript
module.exports = {
apps: [{
name: 'my-app', // 应用名称
script: './app.js', // 启动脚本
// 实例配置
instances: 4, // 实例数
exec_mode: 'cluster', // cluster/fork
// 环境变量
env: {
NODE_ENV: 'development',
PORT: 3000
},
env_production: {
NODE_ENV: 'production',
PORT: 8080
},
// 日志配置
log_date_format: 'YYYY-MM-DD HH:mm:ss',
error_file: './logs/error.log',
out_file: './logs/out.log',
// 重启策略
autorestart: true, // 自动重启
watch: false, // 监听文件
max_restarts: 10, // 最大重启次数
min_uptime: '10s', // 最小运行时间
// 资源限制
max_memory_restart: '500M' // 内存限制
}]
}
// 使用方式:
// pm2 start ecosystem.config.js
// pm2 start ecosystem.config.js --env production2. 多应用配置示例
javascript
module.exports = {
apps: [
{
name: 'api-server',
script: './api/index.js',
instances: 4,
exec_mode: 'cluster',
env: { PORT: 3000 }
},
{
name: 'worker',
script: './worker.js',
instances: 2,
exec_mode: 'fork',
env: { QUEUE_NAME: 'default' }
},
{
name: 'scheduler',
script: './scheduler.js',
instances: 1,
cron_restart: '0 */6 * * *' // 每 6 小时重启
}
]
}六、面试标准回答
PM2 是一个功能强大的 Node.js 生产级进程管理器,主要用于管理和守护应用程序进程。
核心功能包括:
- 进程守护:应用崩溃自动重启,系统重启自动启动
- 负载均衡:集群模式利用多核 CPU,提升性能
- 日志管理:自动收集日志,支持日志轮转
- 监控面板:实时监控 CPU、内存使用情况
- 零停机重启:reload 命令实现无缝重启
常用命令:
pm2 start app.js -i max:集群模式启动pm2 list/status:查看进程状态pm2 logs:查看日志pm2 monit:实时监控pm2 restart/reload:重启应用pm2 stop/delete:停止/删除应用配置文件 ecosystem.config.js可以管理多个应用,支持多环境配置,是生产环境的标准做法。
实际项目中,我会:
- 使用集群模式充分利用 CPU 核心
- 配置内存限制防止内存泄漏
- 设置日志轮转避免磁盘占满
- 配置开机自启保证服务可用性
相比 supervisor/systemd,PM2 的优势是更简单的配置和使用,内置集群模式和负载均衡,更好的日志和监控支持。
七、记忆口诀
PM2 歌诀:
PM2 是进程管家,
Node 应用离不开它。
start 启动 cluster 模式,
-i max 用满 CPU!
list 查看进程表,
logs 日志实时查。
monit 监控看状态,
restart 重启不中断!
配置文件要写好,
多环境来管理它。
生产环境要优化,
开机自启保稳定!八、总结一句话
- PM2: 进程守护 + 负载均衡 = Node.js 部署标配 🚀
- 常用命令: start/stop/logs/monit = 运维必备技能 ⚡
- 配置文件: ecosystem.config.js = 多应用管理神器 🎯
- 集群模式: 多核利用 + 零停机 = 高可用保障 ✓